﻿using System;
using System.Web.UI;
using Sebrae.Academico.Trilhas.BP;
using Sebrae.Academico.Trilhas.Dominio.Classes;

namespace Sebrae.Academico.Trilhas.WebForms.Cadastros.TopicoTematico
{
    public partial class EdicaoTopicoTematico : System.Web.UI.Page
    {

        private TrilhaTopicoTematico trilhaTopicoTematicoEdicao = null;
        private ManterTrilhaTopicoTematico manterTrilhaTopicoTematico = new ManterTrilhaTopicoTematico();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Session["TrilhaTopicoTematicoEdit"] != null)
                {
                    int idTrilhaTopicoTematico = int.Parse(Session["TrilhaTopicoTematicoEdit"].ToString());
                    trilhaTopicoTematicoEdicao = manterTrilhaTopicoTematico.ObterTrilhaTopicoTematicoPorID(idTrilhaTopicoTematico);
                    PreencherCampos(trilhaTopicoTematicoEdicao);
                }
            }
        }

        private void PreencherCampos(TrilhaTopicoTematico trilhaTopicoTematico)
        {
            if (trilhaTopicoTematico != null)
            {
                txtNome.Text = trilhaTopicoTematico.Nome;
                txtDescTextoEnvio.Text = trilhaTopicoTematico.DescricaoTextoEnvio;
                txtArqEnvio.Text = trilhaTopicoTematico.DescricaoArquivoEnvio;
                txtQtdMinima.Text = trilhaTopicoTematico.QtdMinimaPontosAtivFormativa.ToString();
            }
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            //Todo: - Este page.isvalid so faz sentido com o uso dos validators
            //Ex: RequiredFieldValidator, RegularExpressionValidator
            if (Page.IsValid)
            {
                try
                {

                    trilhaTopicoTematicoEdicao = new TrilhaTopicoTematico();

                    if (Session["TrilhaTopicoTematicoEdit"] == null)
                    {
                        manterTrilhaTopicoTematico = new ManterTrilhaTopicoTematico();
                        trilhaTopicoTematicoEdicao = ObterObjetoTrilhaTopicoTematico();
                        manterTrilhaTopicoTematico.IncluirTrilhaTopicoTematico(trilhaTopicoTematicoEdicao);
                        LimparCampos();
                    }
                    else
                    {
                        trilhaTopicoTematicoEdicao = ObterObjetoTrilhaTopicoTematico();
                        trilhaTopicoTematicoEdicao.ID = int.Parse(Session["TrilhaTopicoTematicoEdit"].ToString());
                        manterTrilhaTopicoTematico.AlterarTrilhaTopicoTematico(trilhaTopicoTematicoEdicao);
                        Session.Remove("TrilhaTopicoTematicoEdit");
                    }

                    Response.Redirect("ListarTopicoTematico.aspx");

                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

        private void LimparCampos()
        {
            txtNome.Text = "";
            txtDescTextoEnvio.Text = "";
            txtArqEnvio.Text = "";
            txtQtdMinima.Text = "";
        }

        private TrilhaTopicoTematico ObterObjetoTrilhaTopicoTematico()
        {
            trilhaTopicoTematicoEdicao = new TrilhaTopicoTematico();

            if (!string.IsNullOrWhiteSpace(txtNome.Text)) trilhaTopicoTematicoEdicao.Nome = txtNome.Text.Trim();
            if (!string.IsNullOrWhiteSpace(txtDescTextoEnvio.Text)) trilhaTopicoTematicoEdicao.DescricaoTextoEnvio = txtDescTextoEnvio.Text.Trim();
            if (!string.IsNullOrWhiteSpace(txtArqEnvio.Text)) trilhaTopicoTematicoEdicao.DescricaoArquivoEnvio = txtArqEnvio.Text.Trim();

            if (!string.IsNullOrWhiteSpace(this.txtQtdMinima.Text))
            {
                int qtdMinima = 0;
                if (!int.TryParse(this.txtQtdMinima.Text.Trim(), out qtdMinima))
                    throw new Exception("Valor Inválido para o Campo Quantidade Mínima.");
                else
                    trilhaTopicoTematicoEdicao.QtdMinimaPontosAtivFormativa = qtdMinima;
            }

            return trilhaTopicoTematicoEdicao;
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("ListarTopicoTematico.aspx");
        }

    }
}